Micron Document
ZgRNS Git Node

Node / mirrors / rns-page-node rns://a9593d0a1ff565aefd8594cbdb671af6/mirrors/rns-page-node



>RNS Page Node

A simple way to serve pages and files over the Reticulum network. It is a drop-in replacement for NomadNet nodes that primarily serve pages and files. For more advanced setups, use NomadNet.

Full documentation lives in docs/. The rendered site is at https://quad4-software.github.io/rns-page-node.

The project targets RNS 1.5.2 and newer and Python 3.10 and newer.

Source: GitHub (code mirror). Releases: PyPI and signed artifacts on Reticulum via rngit (T383838origin RNS remote).

Features

• Serves simple pages and files over RNS
• Dynamic page support with environment variables
• Form data and request parameter parsing
• Image Support

Installation

Requires Python 3.10 or newer. The package depends on RNS 1.5.0 or newer and cryptography 50.0.0 or newer. Older releases cap these below the required versions, which conflicts with current Reticulum.

From PyPI

T282828
pip install Ta5d6ff"rns-page-node>=1.7.0"
T8b949e# or
pipx install Ta5d6ff"rns-page-node>=1.7.0"


With uv:

T282828
uv tool install Ta5d6ff"rns-page-node>=1.7.0"


If PyPI does not list 1.7.0 yet, install from GitHub (below) or upgrade an existing pipx app:

T282828
pipx install Ta5d6ff"git+https://github.com/Quad4-Software/rns-page-node.git" --force


From GitHub (source)

T282828
pip install git+https://github.com/Quad4-Software/rns-page-node.git
T8b949e# or
pipx install git+https://github.com/Quad4-Software/rns-page-node.git


With uv:

T282828
uv tool install Ta5d6ff"git+https://github.com/Quad4-Software/rns-page-node.git"


From an rngit release

If you use Reticulum and have T383838rngit configured, fetch a release from the project RNS remote. The remote is T383838rns://06a54b505bb67b25ef3f8097e8001edc/public/rns-page-node, which is the same URL as T383838git remote get-url origin when using the RNS remote.

T282828
rngit release rns://06a54b505bb67b25ef3f8097e8001edc/public/rns-page-node fetch v1.7.0:all
pip install v1.7.0/rns_page_node-1.7.0-py3-none-any.whl

With T383838pip-rns:

T282828
pip-rns install --from-release rns://06a54b505bb67b25ef3f8097e8001edc/public/rns-page-node --ref v1.7.0

Usage

T282828
T8b949e# will use current directory for pages and files
rns-page-node


or with command-line options:

T282828
rns-page-node --node-name Ta5d6ff"Page Node" --pages-dir ./pages --files-dir ./files --media-dir ./media --identity-dir ./node-config --announce-interval T79c0ff360


or with a config file:

T282828
rns-page-node /path/to/config.conf

Configuration File

You can use a configuration file to persist settings. See T383838config.example for an example.

Config file format is simple T383838key=value pairs:

T282828
# Comment lines start with #
node-name=My Page Node
pages-dir=./pages
files-dir=./files
media-dir=./media
identity-dir=./node-config
announce-interval=360

Priority order: Command-line arguments > Environment variables > Config file > Defaults

Build

T282828
make build

Build wheels only:

T282828
make wheel

Development

T282828
poetry install
bash tests/run_tests.sh
make lint

T383838make test runs the same script as T383838tests/run_tests.sh.

Pure Python variant

For targets that cannot install PyCA/cryptography, install the pure package:

T282828
pip install rns-page-node-pure

It depends on T383838rnspure and uses Reticulum's internal pure Python crypto backend.

Shell completions, manpage and docs

• Completions for bash, zsh, fish, tcsh and PowerShell are in T383838completions/.
• The manpage is at T383838docs/man/rns-page-node.1.
• Docsify documentation is in T383838docs/ and deploys to GitHub Pages.

Build the files with:

T282828
make completions
make manpage

Offline zipapps

Build a single T383838.pyz file with all dependencies included:

T282828
make pyz
make pyz-pure

Run it with T383838python3 dist/rns-page-node.pyz.

Releases

Distribution is PyPI plus rngit (Reticulum). Pushing tags/commits uses T383838origin, which mirrors code to GitHub and the RNS remote.

T282828
make release-dist T8b949e# build dist/
make release T8b949e# tag, push (GitHub + RNS), upload rngit release
make release-local T8b949e# rngit release on local remote only
make publish T8b949e# upload wheels to PyPI


Other targets: T383838release-list, T383838release-view, T383838release-fetch, T383838release-verify, T383838release-delete. Override T383838RELEASE_TAG, T383838RNGIT_REMOTE, T383838RNGIT_IDENTITY, or T383838RNGIT_SIGNER as needed.

Pages

Supports dynamic executable pages with full request data parsing. Pages can receive:
• Form fields via T383838field_* environment variables
• Link variables via T383838var_* environment variables
• Remote identity via T383838remote_identity environment variable
• Link ID via T383838link_id environment variable

This enables forums, chats, and other interactive applications compatible with NomadNet clients.

Options

T282828
Positional arguments:
node_config Path to rns-page-node config file

Optional arguments:
-c, --config Path to the Reticulum config file
-n, --node-name Name of the node
-p, --pages-dir Directory to serve pages from
-f, --files-dir Directory to serve files from
-m, --media-dir Directory to serve images from (defaults to pages directory)
-i, --identity-dir Directory to persist the node's identity
-a, --announce-interval Interval to announce the node's presence (in minutes, default: 360 = 6 hours)
--page-refresh-interval Interval to refresh pages (in seconds, 0 = disabled)
--file-refresh-interval Interval to refresh files (in seconds, 0 = disabled)
-l, --log-level Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)

License

This project incorporates portions of the NomadNet codebase, which is licensed under the GNU General Public License v3.0 (GPL-3.0). As a derivative work, this project is also distributed under the terms of the GPL-3.0. See the LICENSE file for full license.

Served by rngit 1.5.2 - Generated in 0.05s